From 0d884d22fbff49edfdf3fe6a8333cc0b6271ee69 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 5 Mar 2018 14:59:21 +0100 Subject: [PATCH] gtkcolorswatch: Stop using ::key-press-event Use GtkEventControllerKey for the task --- gtk/gtkcolorswatch.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/gtk/gtkcolorswatch.c b/gtk/gtkcolorswatch.c index 4872f4b667..44a04c685b 100644 --- a/gtk/gtkcolorswatch.c +++ b/gtk/gtkcolorswatch.c @@ -39,6 +39,7 @@ #include "gtksnapshot.h" #include "gtkstylecontextprivate.h" #include "gtkwidgetprivate.h" +#include "gtkeventcontrollerkey.h" #include "a11y/gtkcolorswatchaccessibleprivate.h" @@ -66,6 +67,7 @@ struct _GtkColorSwatchPrivate GtkGesture *long_press_gesture; GtkGesture *multipress_gesture; + GtkEventController *key_controller; GtkWidget *overlay_widget; GtkWidget *popover; @@ -249,14 +251,13 @@ swatch_drag_data_received (GtkWidget *widget, } static gboolean -swatch_key_press (GtkWidget *widget, - GdkEventKey *event) +key_controller_key_pressed (GtkEventControllerKey *controller, + guint keyval, + guint keycode, + GdkModifierType state, + GtkWidget *widget) { GtkColorSwatch *swatch = GTK_COLOR_SWATCH (widget); - guint keyval; - - if (gdk_event_get_keyval ((GdkEvent *) event, &keyval)) - return GDK_EVENT_PROPAGATE; if (keyval == GDK_KEY_space || keyval == GDK_KEY_Return || @@ -273,9 +274,6 @@ swatch_key_press (GtkWidget *widget, return TRUE; } - if (GTK_WIDGET_CLASS (gtk_color_swatch_parent_class)->key_press_event (widget, event)) - return TRUE; - return FALSE; } @@ -515,6 +513,7 @@ swatch_dispose (GObject *object) g_clear_object (&swatch->priv->long_press_gesture); g_clear_object (&swatch->priv->multipress_gesture); + g_clear_object (&swatch->priv->key_controller); G_OBJECT_CLASS (gtk_color_swatch_parent_class)->dispose (object); } @@ -535,7 +534,6 @@ gtk_color_swatch_class_init (GtkColorSwatchClass *class) widget_class->drag_begin = swatch_drag_begin; widget_class->drag_data_get = swatch_drag_data_get; widget_class->drag_data_received = swatch_drag_data_received; - widget_class->key_press_event = swatch_key_press; widget_class->popup_menu = swatch_popup_menu; widget_class->size_allocate = swatch_size_allocate; widget_class->state_flags_changed = swatch_state_flags_changed; @@ -590,6 +588,10 @@ gtk_color_swatch_init (GtkColorSwatch *swatch) g_signal_connect (swatch->priv->multipress_gesture, "pressed", G_CALLBACK (tap_action), swatch); + swatch->priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (swatch)); + g_signal_connect (swatch->priv->key_controller, "key-pressed", + G_CALLBACK (key_controller_key_pressed), swatch); + gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (swatch)), "activatable"); swatch->priv->overlay_widget = g_object_new (GTK_TYPE_IMAGE, -- 2.30.2